Many systems involve sending data from a source to a destination through a channel. The channel may introduce gain error and memory error to the data being transmitted thereby resulting in a degradation of the signal-to-noise ratio. The accurate recovery of the source input data to the channel at the output of the channel can be difficult.